package com.ruoyi.rsikManage.service;

import com.ruoyi.rsikManage.domain.*;
import com.ruoyi.rsikManage.domain.algoTree.AlgoCountVo;
import com.ruoyi.rsikManage.domain.vo.AlgoAndMonitors;
import com.ruoyi.rsikManage.domain.algoTree.AlgoTreeVo;
import com.ruoyi.rsikManage.domain.vo.MonitorAndAlgos;

import java.util.Date;
import java.util.List;

public interface AlgorithmService {


    List<AlgoCountVo> totalNumberOfAlgosInAlgoTree();

    List<AlgoCountVo> totalNumberOfAlgosInAlgoTreeForUnitCodes(Long unitCode);


    List<AlgoCountVo> totalNumberOfAlgosInAlgoTreeGroup();


    //算法-监控点 列表
    List<AlgoAndMonitors>  algorithmAndMonitors(Algorithm algorithm);
    //监控点-算法列表
    List<MonitorAndAlgos> monitorAndAlgorithmV1(String monitorName);

    List<MonitorAndAlgos> monitorAndAlgorithm(List<Long> unitCodes,String monitorName);

    //List<PlaceCategory> placeCategoryAndPlaceAndAlgorithms();
    List<PlaceCategory> placeCategoryAndPlaceAndAlgorithms2();
    //算法列表
    List<Algorithm> algoList(Algorithm algorithm);
    //查询算法部署的的监控点
    List<MonitorPoint> monitorsInTheAlgorithm(String algorithmId);
    //查询该监控点上部署的算法个数
    List<Algorithm> algorithmsInTheMonitor(String monitorId);

    //查询该监控点上部署的算法个数
    List<Algorithm> algorithmsInTheMonitorForUnitCodes(String monitorId);

    AlgoTreeVo selectAlgoTree(Integer categoryId);

    AlgoTreeVo selectAlgoTreeV2(Integer categoryId ,Long unitCode);


    AlgoScenarioRes selectAlgoScenarioList(String category, Date startTime, Date endTime);

    List<CategoryAlarmCount> countCategoryAlarm(Date startTime, Date endTime);
}
